package com.wu.service.weixin.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wu.common.constant.Constant;
import com.wu.common.page.PageResult;
import com.wu.common.service.impl.BaseServiceImpl;
import com.wu.dao.weixin.dao.WeixinNewsitemDao;
import com.wu.dao.weixin.vo.WeixinNewsTemplateVo;
import com.wu.dao.weixin.vo.WeixinNewsitemVo;
import com.wu.entity.weixin.po.WeixinNewsitem;
import com.wu.service.weixin.covert.WxNewsItemConvert;
import com.wu.service.weixin.covert.WxNewstemplateConvert;
import com.wu.service.sys.query.WeixinNewsitemQuery;
import com.wu.service.weixin.service.WeixinNewsitemService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 描述：</b>图文模板素材表<br>
 * @author：weijian.zhang
 * @since：2018年07月13日 12时46分36秒 星期五 
 * @version:1.0
 */
@Service
public class WeixinNewsitemServiceImpl  extends BaseServiceImpl<WeixinNewsitemDao, WeixinNewsitem>  implements WeixinNewsitemService {
	@Resource
	private WeixinNewsitemDao weixinNewsitemDao;

	@Override
	public void doAdd(WeixinNewsitem weixinNewsitem) {
		weixinNewsitemDao.insert(weixinNewsitem);
	}

	@Override
	public void doEdit(WeixinNewsitem weixinNewsitem) {
		weixinNewsitemDao.update(weixinNewsitem);
	}

	@Override
	public void doDelete(String id) {
		weixinNewsitemDao.delete(id);
	}

	@Override
	public WeixinNewsitem queryById(String id) {
		WeixinNewsitem weixinNewsitem  = weixinNewsitemDao.get(id);
		return weixinNewsitem;
	}

	@Override
	public PageResult<WeixinNewsitemVo> queryPageList(WeixinNewsitemQuery query){
			// 查询参数
			Map<String, Object> params = getParams(query);
			// 分页查询
			IPage<WeixinNewsitem> page = getPage(query);
			params.put(Constant.PAGE, page);
			// 数据列表
			List<WeixinNewsitem> list = baseMapper.queryPageList(params);
			return new PageResult<WeixinNewsitemVo>(WxNewsItemConvert.INSTANCE.convertList(list), page.getTotal());
	}

	//根据newstemplateId获取模板素材
	@Override
	public List<WeixinNewsitem> queryByNewstemplateId(String newstemplateId) {
		return weixinNewsitemDao.queryByNewstemplateId(newstemplateId);
	}

	//update-begin--Author:zhangweijian  Date: 20180724 for：获取素材最大序号
	@Transactional(rollbackFor = {Exception.class})
	//调整素材序号
	@Override
	public void changeOrder(String id, String passiveNewsId,String state) {
		//获取调整的素材信息
		WeixinNewsitem newsItems=weixinNewsitemDao.get(id);
		//获取被动调整的素材信息
		WeixinNewsitem passiveItems=weixinNewsitemDao.get(passiveNewsId);
		if("1".equals(state)){
			newsItems.setOrderNo(String.valueOf(Integer.parseInt(newsItems.getOrderNo())-1));
			passiveItems.setOrderNo(String.valueOf(Integer.parseInt(newsItems.getOrderNo())+1));
		}
		if("0".equals(state)){
			newsItems.setOrderNo(String.valueOf(Integer.parseInt(newsItems.getOrderNo())+1));
			passiveItems.setOrderNo(String.valueOf(Integer.parseInt(newsItems.getOrderNo())-1));
		}
		weixinNewsitemDao.update(newsItems);
		weixinNewsitemDao.update(passiveItems);
	}

	//获取素材最大序号
	@Override
	public String getMaxOrderNo(String newstemplateId) {
		return weixinNewsitemDao.getMaxOrderNo(newstemplateId);
	}
	//update-end--Author:zhangweijian  Date: 20180724 for：获取素材最大序号



	private Map<String, Object> getParams(WeixinNewsitemQuery query){
		Map<String, Object> params = new HashMap<>();
		params.put("title", query.getTitle());
		// 数据权限
		params.put(Constant.DATA_SCOPE, getDataScope("t1", null));

		return params;
	}

}
